// Express 是基于 Node.js 平台，快速、开放、极简的 Web 开发框架。
const express = require('express')
//md5 加密解密
// const md5 = require('md5')
// npm 官方文档的这样介绍 dotenv: Dotenv 是一个零依赖的模块，它能将环境变量中的变量从 .env 文件加载到 process.env 中。
require('dotenv').config()
const path = require('path')
const cookieSession = require('cookie-session')
// 连接数据库
// 协议://主机地址:端口/pathname  => 协议://主机地址:端口/数据库
require('./connDateabase')
//.then(() => console.log('成功了')).catch(() => console.log('失败了'))

//创建web服务器
const app = express()
//启动web服务器
app.listen(3000, '0.0.0.0', () => console.log('http://localhost:3000'))
//指定.html使用的解析引擎(官方给出的是art，自己开心就好）
app.engine('html', require('express-art-template'))
// 设置模板文件路径
//path.resolve() 方法会把一个路径或路径片段的序列解析为一个绝对路径。
app.set('views', path.resolve('./views'))
// 静态资源 css js image 等
app.use(express.static('./public'))
//post 
app.use(express.urlencoded({ extended: false }))
app.use(express.json())

// session 会话机制
const secret = process.env.secret
app.use(cookieSession({
  name: 'gp',
  secret
}))
//路由
app.use(require('./router'))
// 404处理
app.all('*', (req, res) => {
  res.render('404.html')
})
// 添加文档  1.promise,2.回调
/* model.create({
  username: 'aaa',
  password: 'admin888',
  phone: '13232352311',
  sex: 2,
  hobbies: ['a']
}).then(ret => console.log(ret)).catch(err => console.log(err.errors)) */
// }).then(ret => console.log(ret)).catch(err => console.log(err.errors.username.message))


// 查询
// find 返回就是一个数组
// findOne 返回就是一个对象
// 多条
// model.find().then(data => console.log(data))
// model.find({ isdel: true }).then(data => console.log(data))
// 指定查询记录数
// model.find().sort({updatedAt:-1}).skip(0).limit(1).then(data => console.log(data))

// 查询提定条件的数据
// model.find({username:'admin'}).then(data => console.log(data))

// // 查询单条记录
// model.findOne({username:'admin'}).then(data => console.log(data))

// 根据id返回对应记录
// model.findOne({_id:'62592ed412b923f3fb891700'}).then(data => console.log(data))
// model.findById('62592ed412b923f3fb891700').then(data => console.log(data))
// 如果你在schema中定义了select配置为true,如果你还要获取password字段就可这样完成
// model.findOne({ _id: '62592ed412b923f3fb891700' }, { password: 1 }).then(data => console.log(data))
// model.findById('62592ed412b923f3fb891700').then(data => console.log(data.password))

// 查询的同时删除
// model.findOneAndDelete({_id:'62592ed412b923f3fb891700'})

// 条件判断
// model.find({age:{$gte:2}}).then(data => console.log(data))


// 修改
// model.updateMany({ _id: '62592ed412b923f3fb891700' }, { $set: { username: 'admin888' } }).then(data => console.log(data))
// model.updateMany({ _id: '62592ed412b923f3fb891700' }, { $inc: { age: 1 } }).then(data => console.log(data))
// model.findOneAndUpdate({ _id: '62592ed412b923f3fb891700' }, { $inc: { age: 1 } }).then(data => console.log(data))

// 删除
// model.deleteMany({_id:'62592ed412b923f3fb891700'})
